﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Helper;
using BLL;
using Logging;

namespace QuanLyBanLe
{
    public partial class FormChangePassword : Form
    {
        private UserService m_Service;
        public FormChangePassword()
        {
            InitializeComponent();
            m_Service = new UserService();
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            string newPass = txtNewPass.Text;
            if (ValidateData())
            {
                try
                {
                    string hashPassword = "";
                    bool changedPassSuccess = m_Service.ChangePassword(FormMain.s_User.Username, newPass, out hashPassword);
                    if (changedPassSuccess)
                    {
                        MessageBox.Show("Đổi mật khẩu thành công", "Thông báo", MessageBoxButtons.OK,
                            MessageBoxIcon.Information);
                        FormMain.s_User.Password = hashPassword;
                    }
                    else
                    {
                        MessageBox.Show("Đổi mật khẩu không thành công, vui lòng thử lại", "Thông báo", MessageBoxButtons.OK,
                           MessageBoxIcon.Information);
                    }
                }
                catch (Exception ex)
                {
                    MyLogger.LogException("Lỗi xảy ra khi đổi mật khẩu: " + ex.Message, ex);
                }
            }
        }

        private void btnExit_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private bool ValidateData()
        {
            string currentPass = txtCurPass.Text;

            if (String.IsNullOrEmpty(txtCurPass.Text))
            {
                errorProvider1.SetError(txtCurPass, "Nhập mật khẩu cũ");
                return false;
            }
            else
            {
                errorProvider1.SetError(txtCurPass, "");
            }

            if (String.IsNullOrEmpty(txtNewPass.Text))
            {
                errorProvider1.SetError(txtNewPass, "Nhập mật khẩu mới");
                return false;
            }
            else
            {
                errorProvider1.SetError(txtNewPass, "");
            }

            if (String.IsNullOrEmpty(txtConfirmNewPass.Text))
            {
                errorProvider1.SetError(txtConfirmNewPass, "Nhập lại mật khẩu mới");
                return false;
            }
            else
            {
                errorProvider1.SetError(txtConfirmNewPass, "");
            }

            string hashPass = Encrypt.Hash(currentPass);
            if (hashPass != FormMain.s_User.Password)
            {
                errorProvider1.SetError(txtCurPass, "mật khẩu cũ không đúng");
                txtCurPass.Text = "";
                return false;
            }
            else
            {
                errorProvider1.SetError(txtCurPass, "");
            }

            string newPass = txtNewPass.Text;
            string confirmNewPass = txtConfirmNewPass.Text;
            if (newPass != confirmNewPass)
            {
                errorProvider1.SetError(txtNewPass, "Mật khẩu mới và xác nhận mật khẩu mới không khớp");
                errorProvider1.SetError(txtConfirmNewPass, "Mật khẩu mới và xác nhận mật khẩu mới không khớp");
                txtNewPass.Text = "";
                txtConfirmNewPass.Text = "";
                return false;
            }
            else
            {
                errorProvider1.SetError(txtNewPass, "");
                errorProvider1.SetError(txtConfirmNewPass, "");
            }
            return true;
        }

        private void FormChangePassword_Load(object sender, EventArgs e)
        {
            this.Text += FormMain.GetShopInfo();
        }
    }
}
